This section provides background information related to the present disclosure, which is not necessarily prior art.
An application (referred to interchangeably in this disclosure as an “app”), such as a mobile app, may contain multiple deep states. For example, in an app that rates the quality of restaurants based on social media opinion data, the detail page for each restaurant would be considered a deep state. Deep states are reachable from within the app through a sequence of user actions that can involve navigating through multiple menu screens (or, views) and selections of user interface elements. Each of these menu screens and user interface elements can be mediated by a unique view controller associated with that displayed screen.
Usually, these deep states are accessible only from within the app itself. Web search engines operating outside the app, for example, cannot reach the deep states within the app. This means that when a user conducts a conventional web search for restaurants and wants to explore one of the returned choices in a specialized restaurant rating app, the user would have to manually copy and paste the name of the selected search result into the search field of the restaurant rating app and command the restaurant ranking app to access its internal deep state corresponding to the selected restaurant. Much user interaction is required.
If deep states of apps could be exposed to external apps and computer processes, the user could enjoy the augmented functionality, for example, of being able to begin a search for a suitable restaurant using an Internet-based search server and then to have one of the results of that search automatically lead to the appropriate deep linked page of a specialized restaurant ranking app.
However, implementing such functionality requires developer effort and requires deep linking expertise that the developer may not possess. When app development is limited by time, budget, or expertise, deep link functionality for some or even all of the states of an app may not be a high enough priority to get implemented.
In FIG. 1, a graphical representation of various views is shown for a hypothetical app 100. The app 100 includes View A 104-1, View B 104-2, and View C 104-3 (collectively, views 104). In various implementations, the views 104 may be managed by one or more view controllers, which may be developed according to the model-view-controller (MVC) software architecture pattern.
In the example of FIG. 1, user action at A invokes View A 104-1. For example, View A 104-1 may be a default state and therefore invoking the app 100 will first lead to View A 104-1. User action at B transitions to View B 104-2. User action at C transitions to View C 104-3. User action at D transitions from View C 104-3 back to View B 104-2. View A 104-1 and View B 104-2 may be considered deep states, reachable via one or more user actions following invocation of the app 100.
As an example only, the app 100 may be a restaurant review app, where View A 104-1, the default state, is a search state with a text search box allowing a user to search for restaurants. View A 104-1 may also include canned queries, such as searches by specific cuisines and searches by specific locations. View B 104-2, displayed in response to the user performing a search in View A 104-1 (user activity at B), may be a search engine results page, displaying a list of restaurants meeting the search criteria as well as select information about each restaurant.
Upon user selection of one of the results in View B 104-2 (user action at C), View C 104-3 displays the information for the selected result. A view controller (not shown) may instantiate View C 104-3 from a template that includes user interface elements for displaying the name of the restaurant, representative pictures of the restaurant, and reviews of the restaurant, and user interface elements for performing actions, such as booking a table at the restaurant, writing a review, etc. The template may be populated with restaurant information from a data store for the selected restaurant. The user may return (user action at D) from View C 104-3 to View B 104-2 to select another result.
The app 100 may not include a mechanism for any internal request or external request (such as from a browser or from a search function of an operating system) to directly reach View B 104-2. In other words, deep links are not available to View B 104-2 or to View C 104-3. Further, even if the developer has implemented internal deep links to allow the app 100 to directly access View B 104-2 or View C 104-3, the app 100 may not have exposed this deep linking capability so that deep link instructions can be submitted to the app 100 from external sources.